[10.x] Fix Http global middleware for queue, octane, and dependecy injection #47915
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fixes #47738
We added the ability to add global middleware to the Http client.
Because Facades are cached for the duration of a request, this works as expected for each Http request.
On the queue / in octane however, these middleware are not applied.
This is because the underlying
Factory
is not a singleton, so theFactory
instance is refreshed on each job execution / octane request. TheFactory
instance is where the middleware is stored.This PR binds the
Factory
as a singleton. Excluding testing infrastructure, the only state theFactory
maintains is the global middleware and the event service provider. As the event service provider is also a singleton, we shouldn't need to refresh it manually for Octane.In addition to the queue and Octane fixes, this fix also means that the requests made by the
NotPwnedVerifier
will now pass through the global middleware, which I believe is the expected behaviour.This is because the
NotPwnedVerifier
injects theFactory
via the constructor, rather than accessing the Facade.This also applies to any user-land code that is injecting the
Factory
class, which I also believe is the expected behaviour.